package persistencia.dominio.crearTablas;

import persistencia.dominio.*;
import persistencia.Persistencia;
import server.Singleton;
import utils.Utils;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

 
public class CreacionDeTablas {
  static Persistencia persistencia = null;
  static Connection conexionSQL = null;
  //Nuevas entidades que necesitan que se les cree su tabla en la BD
  static TemaTratadoGrupo temaTratadoGrupo = null;
  static Tema tema = null;
  static Anotador anotador = null;
  static TipoGrupo tipoGrupo = null;
  static ConfiguracionGrupo configuracionGrupo = null;
  static Integracion integracion = null;
  static ForoGrupal foroGrupal = null;
  static ActividadGrupal actividadGrupal = null;
  static ListadoTemas listadoTemas = null;
  static EstadoIntegracion estadoIntegracion = null;
  static Invitacion invitacion = null;
  static Solicitud solicitud = null;
  static ParticipanteExcluido participanteExcluido = null;
  static TipoExclusion tipoExclusion = null;
  static Grupo grupo = null;
  static FAQGPC faqgpc = null;
  static PreguntaFrecuenteFAQGPC preguntaFrecuenteFAQGPC = null;
  static RespuestaPreguntaFrecuenteFAQGPC respuestaPreguntaFrecuenteFAQGPC = null;
  static RespuestaFrecuenteFAQGPC respuestaFrecuenteFAQGPC  = null;
  static TipoUsuarioEnNivel tipoUsuarioEnElNivel = null;

  static Actualizacion actualizacion = null;
  static Modulo modulo = null;
  static Log log = null;
  
  static AccesoSiat accesoSIAT = null;

  static EncuestaSiat encuestaSiat = null; 
  static PreguntaSiat preguntaSiat = null;
  static EncuestaSiatPersona encuestaSiatPersona = null;
  static RespuestaPreguntaSiat respuestaPreguntaSiat = null;
  
  
  static DocenteSolicitado docenteSolicitado = null;
  static SolicitudAula solicitudAula = null;
  static SolicitudDocenteAula solicitudDocenteAula = null;
  static RecursoSolicitado recursoSolicitado = null;
  static RecursoMigracion recursoMigracion = null;
  static MigrandoMaterial migrandoMaterial = null;
  static DatosCreacionAula datosCreacionAula = null;
  static InscripcionOnLine inscripcionOnLine = null;
  static ComisionSolicitud comisionSolicitud = null;
  static ComisionSolicitudDocenteAula comisionSolicitudDocenteAula = null;
  
  static EstadoSolicitudAula estadoSolicitudAulaClonada = null;
  static EstadoSolicitudAula estadoSolicitudAulaNueva = null;
  static EstadoSolicitudAula estadoSolicitudAulaEstandar = null;
  static EstadoSolicitudAula estadoSolicitudAulaPublica = null;

  static Favorito favorito = null;
  
  static  TipoLicenciaMaterial tipoLicenciaMaterial = null;
  
  static MiMaterial miMaterial = null;
  static ArchivoCompartidoAula archivoCompartidoAula = null;
  
  static PersonaArchivoCompartida personaArchivoCompartida = null;

  static public void initPersistencia(){
	  persistencia = new Persistencia();
	  persistencia.crearTransaccion();
	  //REGISTER DRIVER
	  try {
	      Driver d = (Driver)Class.forName(Singleton.driver).newInstance();
	  }catch (Exception e){
	      System.out.println(e);
	  }

	  //GET CONNECTION
	  conexionSQL=null;
	  try{
	      conexionSQL = DriverManager.getConnection(Singleton.url,Singleton.userName,Singleton.password);
	  }catch(Exception e){
	      System.out.println(e);
	  }
  }

  static public boolean commit(){
	 try {
		  persistencia.commit();
		  conexionSQL.close();
	      return true;
	  }catch(Exception ex){
		  ex.printStackTrace();
		  persistencia.rollback();
		  try{
		     conexionSQL.close();
		  }catch(SQLException ex1){
		      ex1.printStackTrace();
		      return false;
		  }
		     return false;
	  }
  }

  static public boolean rollback(){
	 try {
		 persistencia.rollback();
		 conexionSQL.close();
		 return true;
	 }catch (Exception ex){
		 ex.printStackTrace();
		 return false;
	 }
  }

  
  
  public static void creacionDeTablasMaterialesCompartidos_y_CarpetaPersonal(){
	  //Modulo de Materiales Compartidos y Carpeta Personal
	  try{
		  initPersistencia();
		  
		  System.out.println("=======================INICIO LA CREACION DE TABLAS==========================");
		  miMaterial = new MiMaterial();
		  persistencia.hacerPersistente(miMaterial);

		  archivoCompartidoAula = new ArchivoCompartidoAula();
		  persistencia.hacerPersistente(archivoCompartidoAula);

		  personaArchivoCompartida = new PersonaArchivoCompartida();
		  persistencia.hacerPersistente(personaArchivoCompartida);	
		  System.out.println("======================TERMINO LA CREACION DE TABLAS==========================");
		  
		  commit();
	  }catch(Exception ee){
			ee.printStackTrace();
			System.out.println("======================TA TODO MAL, HACIENDO ROLLBACK==========================");
			rollback();
	  }	  
	  
  }
 
}